# 编译器配置
CC = gcc
CFLAGS = -g -O0 -Wall -I./include -I/home/iot25/suanmingzhi/project/sqlite/include     # -Iinclude 指定头文件目录
LDFLAGS = -L/home/iot25/suanmingzhi/project/sqlite/lib -Wl,-rpath=/home/iot25/suanmingzhi/project/sqlite/lib -lsqlite3 -lpthread -ldl 


# 目录定义
SRC_DIR = src
BUILD_DIR = build

# 自动获取所有源文件（.c）并生成对应的目标文件（.o）
SOURCES = $(wildcard $(SRC_DIR)/*.c)
OBJECTS = $(patsubst $(SRC_DIR)/%.c, $(BUILD_DIR)/%.o, $(SOURCES))

# 最终目标可执行文件名
TARGET = client_app

# 默认目标：编译并生成可执行文件
all: $(BUILD_DIR)/$(TARGET)

# 生成可执行文件
$(BUILD_DIR)/$(TARGET): $(OBJECTS)
	$(CC) $^ -o $@ $(LDFLAGS)

# 编译每个 .c 文件到 .o 文件（自动处理头文件依赖）
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c
	@mkdir -p $(@D)  # 确保 build 目录存在
	$(CC) $(CFLAGS) -c $< -o $@

# 清理生成的文件
clean:
	rm -rf $(BUILD_DIR) 

# 声明伪目标（不生成实际文件）
.PHONY: all clean
